#ifndef _ENVIRONMENT_H
#define _ENVIRONMENT_H

#include "Colour.h"
#include "Vector3.h"
#include "PointLight.h"
#include "DirectionalLight.h"
#include "SpotLight.h"

#ifdef GALLIUMENGINE_DLL 
#define GALLIUMENGINE_API __declspec( dllexport )
#else
#define GALLIUMENGINE_API __declspec( dllimport )
#endif

#define MAX_POINT_LIGHTS 5
#define MAX_SPOT_LIGHTS 2

namespace GalliumEngine
{

	class Environment
	{
	private:
		int lightingEnabled;	

		int numPointLights;
		int numSpotLights;

		DirectionalLight* directionalLight;

		std::vector<PointLight*> pointLights;
		std::vector<SpotLight*> spotLights;
	public:
		GALLIUMENGINE_API Environment(void);
		GALLIUMENGINE_API ~Environment(void);

		GALLIUMENGINE_API void setDirectionalLight(DirectionalLight* _light);
		GALLIUMENGINE_API DirectionalLight* getDirectionalLight();

		GALLIUMENGINE_API void addPointLight(PointLight* _light);
		GALLIUMENGINE_API PointLight* getPointLight(int i);

		GALLIUMENGINE_API void addSpotLight(SpotLight* _light);
		GALLIUMENGINE_API SpotLight* getSpotLight(int i);

		GALLIUMENGINE_API void setLightingEnabled(bool _enabled);
		GALLIUMENGINE_API int getLightingEnabled();

		GALLIUMENGINE_API int getNumPointLights();
		GALLIUMENGINE_API int getNumSpotLights();
	};

}

#endif